AT指令

149次阅读

共计 1789 个字符,预计需要花费 5 分钟才能阅读完成。

传输单个字节:

void USART_Transmit(unsigned char data)
{
    unsigned int i = 0;

    // 等待发送缓冲区为空
    while (!(UCSRA & (1 << UDRE)))
    {wdt_reset();
        if (++i > 20000)
            break;
    }
    // 发送数据
    UDR = data;
}

 

发送字符串:

void USART_TransmitString(const char *str)
{while (*str)
    {USART_Transmit(*str++);
    }
}

 

单 AT 指令

// 发送 UART 指令
void Send_AT_UART_Command(int num)
{switch (num)
    {
    case 0:
        USART_TransmitString("AT+UART=0\r\n");
        break;

    case 1:
        USART_TransmitString("AT+UART=1\r\n");
        break;

    case 2:
        USART_TransmitString("AT+UART=2\r\n");
        break;

    case 3:
        USART_TransmitString("AT+UART=3\r\n");
        break;

    case 4:
        USART_TransmitString("AT+UART=4\r\n");
        break;

    case 5:
        USART_TransmitString("AT+UART=5\r\n");
        break;

    case 6:
        USART_TransmitString("AT+UART=6\r\n");
        break;
    default:
        break;
    }
}

 

多 AT 指令

// AT 初始化配置
void AT_Init(void)
{
    // 10ms 进行一次
    if (Get(timeBase, AT_TM_BS))
    {Clear(timeBase, AT_TM_BS);

        switch (AT_NUM)
        {

        case 0:
            // 确保不发送数据
            ATsendStart = 0;

            // 等待缓冲区为空
            if (getb(UCSRA, UDRE))
            {
                // 设置蓝牙名称
                Send_AT_MAC_Command(0);
            }

            AT_NUM++;

            break;

        case 1:
            // 确保不发送数据
            ATsendStart = 0;

            // 等待缓冲区为空
            if (getb(UCSRA, UDRE))
            {
                // MAC 表增加 1 号机
                AT_MAC_List(1);
            }

            AT_NUM++;

            break;

        case 2:
            // 确保不发送数据
            ATsendStart = 0;

            // 等待缓冲区为空
            if (getb(UCSRA, UDRE))
            {
                // MAC 表增加 E01
                AT_MAC_List(2);
            }

            AT_NUM++;

            break;

        case 3:
            // 确保不发送数据
            ATsendStart = 0;

            // 等待缓冲区为空
            if (getb(UCSRA, UDRE))
            {
                // 自动重连 mac 表增加 3 号从机
                AT_MAC_List(3);
                AT_NUM++;
            }

            break;

        case 4:
            // 确保不发送数据
            ATsendStart = 0;

            if (getb(UCSRA, UDRE))
            {
                // 自动重连 mac 表增加 4 号从机
                AT_MAC_List(4);
                AT_NUM++;
            }
            break;

        case 5:
            // 确保不发送数据
            ATsendStart = 0;

            if (getb(UCSRA, UDRE))
            {
                // 开启自动重连
                Send_AT_List_Command(1);
                AT_NUM++;
            }
            break;

        case 6:
            // 确保不发送数据
            ATsendStart = 0;

            if (getb(UCSRA, UDRE))
            {
                // 设置功率
                Send_AT_Power_Command(4);
                AT_NUM++;
            }
            break;

        case 7:
            // 确保不发送数据
            ATsendStart = 0;

            if (getb(UCSRA, UDRE))
            {
                // 开启自动重连列表
                // Send_AT_List_Command(1);
                AT_NUM++;
            }
            break;

        case 8:
            // UDR = 0xaa;
            AT_NUM++;
            ATsendStart = 1;
            ATReceiveStart = 1;
            if (getb(UCSRA, UDRE))
            {
                // 重启 BLE
                Send_AT_REBOOT_Command();}
            break;

        case 9:
            AT_NUM = 9;
            ATsendStart = 1;
            ATReceiveStart = 1;
            break;

        default:
            ATsendStart = 0;
            break;
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

正文完
 0